home *** CD-ROM | disk | FTP | other *** search
/ X User Tools / X User Tools (O'Reilly and Associates)(1994).ISO / sources / xbmbrows / xbmbro31.z / xbmbro31 / xbmbrowser3.1 / callbacks.c < prev    next >
C/C++ Source or Header  |  1993-08-05  |  4KB  |  140 lines

  1. /*
  2. *****************************************************************************
  3. ** xbmbrowser version 3.1  (c) Copyright Ashley Roll, 1992.
  4. ** FILE: callbacks.c
  5. **
  6. ** xbmbrowser is Public Domain. However it, and all the code still belong to me.
  7. ** I do, however grant permission for you to freely copy and distribute it on 
  8. ** the condition that this and all other copyright notices remain unchanged in 
  9. ** all distributions.
  10. **
  11. ** This software comes with NO warranty whatsoever. I therefore take no
  12. ** responsibility for any damages, losses or problems that the program may 
  13. ** cause.
  14. *****************************************************************************
  15. */
  16.  
  17. #include "xbmbrowser.h"
  18. #include "user-menu.h"
  19.  
  20. void DoQuit(w, event, params, num_params)
  21. /* Quit the application...
  22. ** The server de-allocates all pixmaps, colors, and widgets so just exit
  23. */
  24.   Widget w;
  25.   XEvent *event;
  26.   String *params;
  27.   Cardinal *num_params;
  28. {
  29.   exit(0);
  30. }
  31.  
  32. void set_name(widget,event)
  33. /* This function is added to the notify callback on all the 
  34. ** menuButtons so that the global 'bitmap_info' contains the most 
  35. ** reciently selected bitmap information line. This is then used
  36. ** in "user-menu.c" for use in user commands.
  37. */
  38.   Widget widget;
  39.   XButtonEvent *event;
  40. {
  41.   XtVaGetValues( widget, XtNlabel, &bitmap_info, NULL);
  42.   XtVaSetValues( lw,     XtNlabel,  bitmap_info, NULL );
  43. }
  44.  
  45. void set_label(widget, event)
  46. /* As the pointer leaves a window -- set the label widget to point to
  47. ** file counts and/or some error string that may be preset.
  48. */
  49.   Widget widget;
  50.   XButtonEvent *event;
  51. {
  52.   XtVaSetValues(lw, XtNlabel, (XtArgVal)label_info, NULL);
  53. }
  54.  
  55.  
  56. void rescan(w,client_data,call_data )
  57. /* this is the callback for the Rescan button */
  58.   Widget w;
  59.   XtPointer client_data,call_data;
  60. {
  61.   /* set the waitCursor */
  62.   XtVaSetValues(mainpw,XtNcursor,(XtArgVal)waitCursor,NULL);
  63.   XFlush(XtDisplay(toplevel));
  64.  
  65.   rescan_bitmaps();
  66.  
  67.   /* set the normal cursor */
  68.   XtVaSetValues(mainpw,XtNcursor,(XtArgVal)normalCursor,NULL);
  69. }
  70.  
  71. void change_dir(w,client_data,call_data )
  72. /* this is the callback for the directory name asciiTextWidget */
  73.   Widget w;
  74.   XtPointer client_data,call_data;
  75. {
  76.   char text[2048], *diatext;
  77.  
  78.   /* set the waitCursor */
  79.   XtVaSetValues(mainpw,XtNcursor,(XtArgVal)waitCursor,NULL);
  80.   XFlush(XtDisplay(toplevel));
  81.  
  82.   /* get the new directory from the widget and only continue if it is 
  83.   ** not the same and is a VALID directory. */
  84.  
  85.   diatext = XawDialogGetValueString(atw);
  86.   if(strcmp(dname,diatext) == 0) return; /* nothing to do */
  87.   strcpy(text, diatext);
  88.  
  89.   /* check if the first char is '~' and substute the correct dir */ 
  90.   if (*text == '~') expand_tilder(text);
  91.  
  92.  
  93.   /* change the current directory to the new directory */
  94.   if(chdir(text) != 0) {
  95.     XtVaSetValues(atw,XtNvalue,(XtArgVal)dname,NULL);
  96.     /* set the normal cursor */
  97.     XtVaSetValues(mainpw,XtNcursor,(XtArgVal)normalCursor,NULL);
  98.     return;
  99.   } 
  100.   (void) getcwd(dname,253);
  101.   XtVaSetValues(atw,XtNvalue,(XtArgVal)dname,NULL);
  102.  
  103.   /* reset the bitmaps */
  104.   scan_bitmaps();
  105.  
  106.   /* set the normal cursor */
  107.   XtVaSetValues(mainpw,XtNcursor,(XtArgVal)normalCursor,NULL);
  108.  
  109. }
  110.  
  111. void dir_menu(w,client_data,call_data )
  112. /* This is the function that is used to handle the dirMenu callbacks
  113. ** it places the new directory in the text widget and calles change_dir
  114. */
  115.   Widget w;
  116.   XtPointer client_data,call_data;
  117. {
  118.   XawListReturnStruct *temp;
  119.  
  120.   temp = (XawListReturnStruct *) call_data;
  121.  
  122.   XtVaSetValues(atw,XtNvalue,(XtArgVal)temp->string,NULL);
  123.   change_dir();
  124. }
  125.  
  126. void pos_dir(widget,event)
  127. /* This procedure positions the DirPopup under the cursor */
  128.   Widget widget;
  129.   XButtonEvent *event;
  130. {
  131.   Position x,w;
  132.  
  133.   XtVaGetValues(dirPopup,XtNwidth,(XtArgVal)&w,NULL);
  134.  
  135.   x = event->x_root - (w/2);
  136.  
  137.   XtVaSetValues(dirPopup,XtNx,(XtArgVal)x,
  138.                          XtNy,(XtArgVal)event->y_root,NULL);
  139. }
  140.